#ifndef IRENDERENGINE_H
#define IRENDERENGINE_H

#include "Framework/Prerequisites.h"

#include "Engine/Engine.h"
#include "Graphics/Colour.h"

namespace tyro
{
	namespace Graphics
	{

		class IRenderEngine
		{
		public:

			IRenderEngine(Engine::Engine* engine);
			virtual ~IRenderEngine();

		
			virtual IRenderWindow* Initialise(const char* const title = "Tyro Engine") = 0;

			virtual void BeginFrame(void) = 0;
			virtual void EndFrame(void) = 0;

			virtual void UpdateRenderTarget( void ) = 0;
			virtual void SwapRenderTargetBuffers( void ) = 0;

			virtual void SetViewport(IViewport* viewport) = 0;
			virtual void SetProjectionMatrix(const Math::Matrix4f& matrix) = 0;
			virtual void SetModelViewMatrix() = 0;

			virtual void ClearBuffers( UINT_32 bufferFlags, const Colour& colour = Colour::Grey, FLOAT_32 depth = 1.0f, UINT16 stencil = 0.0f) = 0;

			virtual void DrawCube() = 0;

		protected:

			void SetRenderTarget( IRenderTarget& newRenderTarget );


			Engine::Engine* engine;

			IRenderTarget* renderTarget;

		private:

			
		};

		

	}

}
#endif